1. Field of the Invention
This invention relates to compiler technology. In particular, the invention relates to inter-procedural analysis.
2. Background of the Invention
A compiler translates a source program to one or more object files. The source program may contain one or more translation units. A translation unit is a subroutine, a function, or any other separately compilable software entity. A compiler typically includes a front end and a back end. The front end typically performs lexical and syntactic analysis, creates symbol table, and generates intermediate code. The back end typically performs code optimization and generates the target object files. Inter-procedural analysis (IPA) is a phase in a compilation process to analyze the entire program and collect global information related to the translations units. The collected global information is then passed to the optimizer for global optimization.
Distributed IPA processes files on disk. When the file size is large, the disk access time may be excessive, resulting in slow compilation. When separately compilable software entities are represented by some data structures, the amount of storage may be large if the size or the number of the software entities is large. For distributed IPA, there may be several locally generated data structures to be written to and read from mass storage devices. Since access time for mass storage devices is slow, the large amount of information exchange via the mass storage may lead to inefficient usage.
Therefore, there is a need for a technique to reduce disk storage requirements and improve access time during compilation.